package br.com.peri.conceito.modelo.impl;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;

import org.apache.commons.beanutils.BeanUtils;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;

import br.com.peri.Pessoa;
import br.com.peri.conceito.exception.ConceitoException;
import br.com.peri.conceito.modelo.PessoaApp;
import br.com.peri.ws.client.PeriWsException_Exception;
import br.com.peri.ws.client.PessoaWebService;

@Name(value = "pessoaAppWs")
@Stateless
public class PessoaAppWsBean implements PessoaApp {

	private static final long serialVersionUID = 1L;

	@In(create = true)
	private PessoaWebService pessoaWebService;

	public Pessoa salvar(Pessoa pessoa) throws ConceitoException {
		br.com.peri.ws.client.Pessoa pessoaWs = new br.com.peri.ws.client.Pessoa();
		
		try {
			
			BeanUtils.copyProperties(pessoaWs, pessoa);
			
			pessoaWs = pessoaWebService.salvarPessoa(pessoaWs);
			
			BeanUtils.copyProperties(pessoa, pessoaWs);
			
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (PeriWsException_Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return null;
	}

	public Pessoa atualizar(Pessoa pessoa) throws ConceitoException {
		return null;
	}

	public void excluir(Pessoa pessoa) throws ConceitoException {
	}

	public Pessoa pesquisarPorId(Pessoa pessoa) {
		return null;
	}

	public List<Pessoa> pesquisarPorParamentros(Pessoa pessoa) {
		if (pessoa == null)
			return new ArrayList<Pessoa>(0);
		java.util.List<br.com.peri.ws.client.Pessoa> pessoas = pessoaWebService
				.listarPessoas(pessoa.getNome(), pessoa.getCpf(),
						pessoa.getCnpj());
		List<Pessoa> ps = new ArrayList<Pessoa>();
		for (br.com.peri.ws.client.Pessoa p : pessoas) {
			Pessoa pi = new Pessoa();
			pi.setCnpj(p.getCnpj());
			pi.setCpf(p.getCpf());
			pi.setId(p.getId());
			pi.setNome(p.getNome());
			ps.add(pi);
		}
		return ps;
	}
	

}